package sword.offer.breakthrough;

import com.sun.deploy.util.StringUtils;

import java.util.Arrays;

/**
 *给定两个 01 字符串a和b，请计算它们的和，并以二进制字符串的形式输出。
 *
 * 输入为 非空 字符串且只包含数字1和0。
 *
 * 示例1:
 * 输入: a = "11", b = "10"
 * 输出: "101"
 *
 * 链接：https://leetcode-cn.com/problems/JFETK5
 * @author 胡宇轩
 * @Email: yuxuan.hu01@bianlifeng.com
 */
public class Second {
    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.addBinary("11", "10");
    }
    static class Solution {
        public String addBinary(String a, String b) {
            int flag = 0;
            StringBuilder sb = new StringBuilder();
            for (int i = a.length()-1, j = b.length()-1; i >= 0 || j >= 0; i--,j--) {
                int num1 = i >= 0 ? a.charAt(i) - '0' : 0;
                int num2 = j >= 0 ? b.charAt(j) - '0' : 0;
                int sum = num1 + num2 + flag;
                flag = sum > 1 ? 1 : 0;
                sb.append((char) ((sum % 2) + '0'));
            }
            if(flag == 1){
                sb.append('1');
            }
            return sb.reverse().toString();
        }
    }
}
